package com.company.eos.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.company.eos.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/**
 * @author Song, Wei
 */
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * 查询用户权限列表
     *
     * @return 用户权限列表
     */
    Set<String> searchUserPermissions(int userId);

    /**
     * 查询用户角色
     *
     * @param userId
     * @return
     */
    ArrayList<String> searchUserRoles(int userId);

    /**
     * 查询用户ID
     *
     * @param openId 用户的openID
     * @return
     */
    public Integer searchIdByOpenId(String openId);

    /**
     * 根据ID查询用户信息
     *
     * @param userId
     * @return
     */
    public HashMap searchById(int userId);

    /**
     * 查询用户概要信息
     *
     * @param userId 用户Id
     * @return
     */
    public HashMap searchUserSummary(int userId);

    /**
     * 查询用户信息
     *
     * @param userId 用户id
     * @return
     */
    public HashMap searchUserInfo(int userId);

    /**
     * 查询部门经理id
     *
     * @param id id
     * @return
     */
    public Integer searchDeptManagerId(int id);

    /**
     * 查询总经理id
     *
     * @return
     */
    public Integer searchGmId();

    /**
     * 查询全部用户名称
     *
     * @return
     */
    ArrayList<HashMap> searchAllUser();

    /**
     * 查询用户分页记录
     *
     * @param param param
     * @return 用户分页记录
     */
    ArrayList<HashMap> searchUserByPage(HashMap param);

    /**
     * @param param
     * @return
     */
    long searchUserCount(HashMap param);

    /**
     * 查询用户名称和部门
     *
     * @param userId
     * @return
     */
    HashMap searchNameAndDept(int userId);

    /**
     * 修改用户
     *
     * @param param
     * @return
     */
    int updateUser(HashMap param);

    /**
     * 删除用户
     *
     * @param ids 用户id
     * @return
     */
    int deleteUserByIds(Integer[] ids);

    /**
     * 解雇员工
     *
     * @param ids 员工ID
     * @return
     */
    int dismissUserByIds(Integer[] ids);

}




